package com.flying.compare;

/**
 * @author 刘鹏飞
 * @ClassName Product
 * @Date 2024/12/28 20:23
 * @Created by 刘鹏飞
 * @Description 产品  --- 自然排序
 * <p>
 * 实现 Comparable接口,并实现抽象方法 compareTo()
 */
public class Product implements Comparable {
    private String name;
    private Double price;

    /*
     * 当前的类需要实现 Comparable接口中的抽象方法 compareTo(Object o)
     * 在此方法中，指明如何判断当前类的对象大小，比如： 按照价格高低进行比较大小。（或从低到高）
     *
     * 如果返回值是正数：   当前对象大
     * 如果返回时是负数：   当前对象小
     */
    @Override
    public int compareTo(Object o) {

        if (o == null) throw new RuntimeException("对象为空");

        if (this == o) return 0;

        if (o instanceof Product p1) {
            // 定义比较规则
            return Double.compare(this.price, p1.price);   // 正序   --->  取反则为降序
        }
        throw new RuntimeException("类型不匹配");
    }


    public Product() {
    }

    public Product(String name, Double price) {
        this.name = name;
        this.price = price;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Double getPrice() {
        return price;
    }

    public void setPrice(Double price) {
        this.price = price;
    }


    @Override
    public String toString() {
        return "Product{" +
               "name='" + name + '\'' +
               ", price=" + price +
               '}';
    }


}
